home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 11 / Amoszine 11 (Disk 2 of 2).adf / Paul_Hickman_Stuff.lha / apme14 / GetAMOSProEnv13.e < prev    next >
Text File  |  1995-11-16  |  3KB  |  132 lines

  1. /* Get AMOS Env Pro - V1.3 By Paul Hickman ©Mar 1994 */
  2.  
  3. /* Copies a selected Envoironment to T:AMOSPro_Interpreter_Config */
  4.  
  5. /* Changes V1.0  ----> V1.1
  6.  
  7.  * Exception Handling for errors used now
  8.  
  9.  * If you press Cancel in the file requester, a WARN value is returned
  10.  
  11.  * If an error occurs, code 20 is returned, add a requester appears.
  12.  
  13.  * Allows initial pathname argument to be quoted with ""
  14.  
  15.  
  16.  
  17.  * Changes V1.1 ----> V1.2
  18.  
  19.  * Request title changed
  20.  
  21.  
  22.  
  23.  
  24.  * Changes V1.2 ----> V1.3
  25.  
  26. */
  27.  
  28. MODULE 'ReqTools','libraries/reqtools','utility/tagitem','Dos/Dos'
  29.  
  30. ENUM    ER_OPEN=20,ER_READ,ER_WRITE,ER_MEM,FR_LIB,FR_ALLOC
  31.  
  32. CONST    RW_ERR=-1
  33.  
  34. RAISE ER_OPEN IF Open()=NIL
  35. RAISE ER_READ IF Read()=RW_ERR
  36. RAISE ER_WRITE IF Write()=RW_ERR
  37. RAISE ER_MEM IF New()=NIL
  38.  
  39. DEF quitstring[5]:STRING
  40.  
  41.  
  42. PROC main() HANDLE
  43.  
  44.   DEF filename[256]:STRING
  45.   DEF infile,outfile,buffer,filesize
  46.   DEF amossys[256]:STRING
  47.  
  48.   /* Set the default AMOS_System path if no arguments */
  49.  
  50.   quitstring := 'Quit'
  51.  
  52.   IF arg [] <= 0
  53.     amossys := 'SYS:AMOS_Pro/APSystem/Interpreter_Configs'
  54.   ELSE
  55.     IF (arg[0] = 34) AND (arg[StrLen(arg)-1] = 34)
  56.       MidStr(amossys,arg,1,StrLen(arg)-2)
  57.     ELSE
  58.       StrCopy(amossys,arg,ALL)
  59.     ENDIF
  60.   ENDIF
  61.  
  62.   /* get The filename */
  63.  
  64.   filereq(filename,amossys)
  65.   IF filename = '' THEN CleanUp(5)
  66.  
  67.   /* Copy the file */
  68.  
  69.   infile := Open(filename,MODE_OLDFILE)
  70.   outfile := Open('T:AMOSPro_Interpreter_Config',MODE_NEWFILE)
  71.   buffer := New(filesize := FileLength(filename))
  72.   Read(infile,buffer,filesize) 
  73.   Close(infile)
  74.   Write(outfile,buffer,filesize) 
  75.   Close(outfile)
  76.   
  77.  
  78.  
  79.  
  80. EXCEPT
  81.  
  82. SELECT exception
  83.   CASE ER_OPEN;      request('Error: Could Not Open A File',quitstring,NIL)
  84.   CASE ER_READ;      request('Error: Could Not Read The Envoironment File',quitstring,NIL)
  85.   CASE ER_WRITE;     request('Error: Could Not Write To The Temporary File',quitstring,NIL)
  86.   CASE ER_MEM;       request('Error: Out Of Memory Error',quitstring,NIL)
  87.   DEFAULT;           request('Error: An IO Error Has Occured',quitstring,NIL)
  88. ENDSELECT
  89.  
  90. ENDPROC
  91.  
  92.  
  93.  
  94. PROC filereq(dirbuf,amossys) HANDLE
  95.  
  96.   RAISE FR_LIB IF OpenLibrary()=NIL
  97.   RAISE FR_ALLOC IF RtAllocRequestA()=NIL
  98.  
  99.   CONST FILEREQ=0,REQINFO=1
  100.  
  101.   DEF filebuf[120]:STRING
  102.   DEF req:PTR TO rtfilerequester
  103.   DEF tempstr[1]:STRING
  104.  
  105.   reqtoolsbase:=OpenLibrary('reqtools.library',37)
  106.   req:=RtAllocRequestA(FILEREQ,0)
  107.   filebuf := 'Default.Config'
  108.   RtChangeReqAttrA(req,[RTFI_DIR,amossys,RTFI_MATCHPAT,'#?.Config',TAG_DONE])
  109.   IF RtFileRequestA(req,filebuf,'Select AMOS Pro Configuration',[RTFI_FLAGS,FREQF_PATGAD,TAG_DONE])=FALSE THEN CleanUp(5)
  110.  
  111.   /* combine the directory & filename */
  112.  
  113.   StrCopy(dirbuf,req.dir,ALL)
  114.   RtFreeRequest(req)
  115.   RightStr(tempstr,dirbuf,1)
  116.   IF StrCmp(tempstr,':',1)=FALSE THEN StrAdd(dirbuf,'/',ALL)
  117.   StrAdd(dirbuf,filebuf,ALL)
  118.   CloseLibrary(reqtoolsbase)
  119.  
  120. EXCEPT
  121.  
  122. SELECT exception
  123.   CASE FR_LIB;     request('Error: Could Not Open Reqtools Library',quitstring,NIL)
  124.   CASE FR_ALLOC;   request('Error: Could Not Open File Requester',quitstring,NIL)    
  125.   DEFAULT;       Raise(exception)
  126. ENDSELECT
  127.   
  128. ENDPROC
  129.  
  130. PROC request(body,gadgets,args)
  131. ENDPROC EasyRequestArgs(0,[20,0,'AMOSPro Loader V1.3',body,gadgets],0,args)
  132.